Presently, various applications exist that require the generation of random numbers. For example, random number generators are used in various encryption techniques for encrypting and protecting data. Some software algorithms and purely digital logic circuits exist that generate pseudorandom numbers. However, given a sequence of previously generated pseudorandom numbers, it may be possible to predict the next number produced. Thus, such software-based and pure-digital based random number generators are not suitable for applications requiring true random numbers, such as cryptography.
To generate truly random numbers, previous techniques have used an analog source of noise in the form of an external component as a source of randomness. However, in cryptography, such a solution opens an avenue of attack in that a “hacker” may attempt to influence the random source. Moreover, in some cases a pure digital circuit for generating random numbers is desirable, particularly when the random number generator is to be implemented within an integrated circuit. Use of an analog source of randomness does not allow for use of a pure digital circuit.
Accordingly, there exists a need in the art for generation of truly random numbers using digital logic and without using an external source of randomness.